package organizacion;

import java.util.ArrayList;
import java.util.Collection;
import unidades.Unidad;

/**
 * Clase que permite gestionar grupos de unidades
 *
 * @author Hasier Rodriguez
 */
public class Equipo {

    private Collection<Unidad> unidades;

    /**
     * Crea un equipo vacío por defecto
     */
    public Equipo() {
        unidades = new ArrayList<Unidad>();
    }

    /**
     * Crea un equipo con unidades
     *
     * @param unidades ArrayList que contiene las unidades para este equipo
     */
    public Equipo(Collection<Unidad> unidades) {
        this.unidades = unidades;
    }

    /**
     * Añade una nueva unidad al equipo
     *
     * @param u La unidad a añadir
     * @throws NullPointerException si la unidad u es nula
     */
    public void addUnidad(Unidad u) {
        if(u == null) {
            throw new NullPointerException("La unidad no puede ser nula");
        }
        unidades.add(u);
    }

    /**
     * Elimina la unidad u del equipo
     *
     * @param u La unidad a eliminar
     */
    public void removeUnidad(Unidad u) {
        unidades.remove(u);
    }

    /**
     * Vacía el equipo de unidades
     */
    public void clear() {
        unidades.clear();
    }

    /**
     * Devuelve si el equipo contiene una unidad
     *
     * @param u La unidad a comprobar si está en el equipo
     * @return true si el equipo actual contiene la unidad u
     */
    public boolean contains(Unidad u) {
        return unidades.contains(u);
    }
    
    /**
     * Vacía el equipo de unidades
     * 
     * @return true si el equipo se ha vaciado
     */
    public boolean isEmpty() {
        return unidades.isEmpty();
    }

    /**
     * Devuelve todas las unidades del equipo
     */
    public Collection<Unidad> getUnidades() {
        return unidades;
    }

}
